package cn.tedu.medicalappointmentsystemk.service;

import cn.tedu.medicalappointmentsystemk.consts.data.AccountConsts;
import cn.tedu.medicalappointmentsystemk.pojo.bo.AppointmentSelectBO;
import cn.tedu.medicalappointmentsystemk.pojo.bo.AppointmentSelectByIdBO;
import cn.tedu.medicalappointmentsystemk.pojo.bo.AppointmentSelectByUserIdBO;
import cn.tedu.medicalappointmentsystemk.pojo.param.AppointmentAddParam;
import cn.tedu.medicalappointmentsystemk.pojo.param.AppointmentUpdateParam;
import cn.tedu.medicalappointmentsystemk.pojo.po.PageData;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface AppointmentService extends AccountConsts {
    AppointmentSelectByIdBO selectAppointmentById(Long userId);

    void insert(AppointmentAddParam param);

    PageData<AppointmentSelectBO> selectAppointment(Integer pageNum);

    void deleteAppointmentById(Long id);

    void updateAppointment(AppointmentUpdateParam param);

    AppointmentSelectByUserIdBO selectAppointmentByUserId(Long id);

    PageData<AppointmentSelectByUserIdBO> selectAppointmentsByUserId(Long id,Integer pageNum);

    Integer selectTotal();

    Integer selectToday();

    Integer selectLastMonth();

    PageData<AppointmentSelectBO> searchLastWeek(Integer pageNum);

    PageData<AppointmentSelectBO> searchLastMonth(Integer pageNum);

    PageData<AppointmentSelectBO> searchToday(Integer pageNum);

    List<AppointmentSelectBO> selectByNickname(String nickname);
}
